home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / coding / 80x86 / code32.lzh / SQRT.RT < prev    next >
Text File  |  1993-01-09  |  2KB  |  72 lines

  1. public  _sqrt
  2. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3. ; Square root
  4. ; In:
  5. ;   EAX - number to take root of
  6. ; Out:
  7. ;   EAX - root
  8. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  9. sqrtbasetbl     db      0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225
  10. _sqrt:
  11.         pushad
  12.         mov ebp,eax
  13.         bsr ebx,eax
  14.         jnz short sqrtf0
  15.         xor ebx,ebx
  16. sqrtf0:
  17.         shr ebx,3
  18.         lea eax,[ebx*8]
  19.         mov cl,32
  20.         sub cl,al
  21.         rol ebp,cl
  22.         mov eax,ebp
  23.         movzx eax,al
  24.         mov edi,offset sqrtbasetbl
  25.         mov ecx,10h
  26. sqrtl0:
  27.         scasb
  28.         je short sqrtl0d
  29.         jb short sqrtl0d2
  30.         loop sqrtl0
  31.         inc edi
  32. sqrtl0d2:
  33.         dec edi
  34.         inc cl
  35. sqrtl0d:
  36.         movzx edx,byte ptr [edi-1]
  37.         dec cl
  38.         xor cl,0fh
  39.         mov edi,ecx
  40.         mov ecx,ebx
  41.         jecxz short sqrtdone
  42.         sub eax,edx
  43. sqrtml:
  44.         shld eax,ebp,8
  45.         rol ebp,8
  46.         mov ebx,edi
  47.         shl ebx,5
  48.         xor edx,edx
  49.         mov esi,eax
  50.         div ebx
  51.         rol edi,4
  52.         add edi,eax
  53.         add ebx,eax
  54. sqrtf2:
  55.         imul eax,ebx
  56.         mov edx,eax
  57.         mov eax,esi
  58.         sub eax,edx
  59.         jc short sqrtf1
  60.         loop sqrtml
  61. sqrtdone:
  62.         mov [esp+28],edi
  63.         popad
  64.         ret
  65. sqrtf1:
  66.         dec ebx
  67.         dec edi
  68.         movzx eax,bl
  69.         and al,1fh
  70.         jmp sqrtf2
  71.  
  72.